package cn.com.blueInfo.bpm.template.repository;

import cn.com.blueInfo.bpm.template.entity.NodeDecision;
import cn.com.blueInfo.bpm.template.request.NodeDecisionDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 节点流转规则 数据服务类
 * @author suxch
 * @since 2025-09-01 19:30:44
 */
public interface NodeDecisionRepository extends IService<NodeDecision> {

    /**
     * 新增节点流转规则
     * @param nodeDecision 节点流转规则参数
     */
    Integer createNodeDecision(NodeDecision nodeDecision);

    /**
     * 批量新增节点流转规则
     * @param nodeDecisionList 节点流转规则参数列表
     */
    Integer batchCreateNodeDecision(List<NodeDecision> nodeDecisionList);

    /**
     * 删除节点流转规则
     * @param nodeDecisionId 节点流转规则ID
     */
    Integer deleteNodeDecision(Long nodeDecisionId);

    /**
     * 批量删除节点流转规则
     * @param nodeDecisionIdList 节点流转规则ID列表
     */
    Integer batchDeleteNodeDecision(List<Long> nodeDecisionIdList);

    /**
     * 更新部分节点流转规则
     * @param nodeDecision 节点流转规则参数
     */
    Integer updateNodeDecisionPartial(NodeDecision nodeDecision);

    /**
     * 更新全部节点流转规则
     * @param nodeDecision 节点流转规则参数
     */
    Integer updateNodeDecision(NodeDecision nodeDecision);

    /**
     * 查询一条节点流转规则
     * @param nodeDecisionId 节点流转规则ID
     */
    NodeDecision getNodeDecisionById(Long nodeDecisionId);

    /**
     * 分页查询节点流转规则
     * @param nodeDecisionQueryDTO 节点流转规则参数
     */
    Page<NodeDecision> getNodeDecisionPage(NodeDecisionDTO.QueryDTO nodeDecisionQueryDTO);

    /**
     * 根据条件查询 节点流转规则 数量
     * @param nodeDecisionQueryDTO 节点流转规则参数
     */
    Long getNodeDecisionCount(NodeDecisionDTO.QueryDTO nodeDecisionQueryDTO);

    /**
     * 根据条件查询 节点流转规则
     * @param nodeDecisionQueryDTO 节点流转规则参数
     */
    List<NodeDecision> getNodeDecisionList(NodeDecisionDTO.QueryDTO nodeDecisionQueryDTO);

}
